Migration of software images is a commonplace activity in modern data-processing systems; generally speaking, a software image is a structure that includes software modules installed on a mass memory of a computer (for example, its operating system, application programs, and/or data). For example, a typical scenario is the refresh of the computer to upgrade its operating system to a new version thereof.
A standard migration procedure, aimed at moving from an operating system that is currently installed on the computer (referred to as source operating system) to another operating system (referred to as target operating system), generally involves the following steps. At first, a snapshot of the computer is taken, and stored onto an external device (for example, a removable disk or a remote server). A migration tool is then run to collect configuration information of the computer (which configuration information as well is stored onto an external device). At this point, it is possible to install the target operating system on the computer. The migration tool is then run again to apply the stored configuration information to the target operating system. In case any problems are encountered with the target operating system (for example, an incorrect operation of the computer), the snapshot of the source operating system is restored onto the computer so as to return to its original condition.
However, the above-described migration procedure suffers several drawbacks.
Particularly, the migration procedure is very slow. Indeed, the installation of the target operating system takes a long time (of the order of 30-60 min); during this time, the computer is completely unavailable. Moreover, the restoring of the source operating system, when necessary, takes a long time as well (during which the computer is again unavailable). Further time is also spent to take the snapshot of the source operating system, which operation should always be performed before installing the target operating system (in order to allow restoring the source operating system in case of problems).
The migration procedure also requires a large storage space (on the external device) to store the snapshot of the source operating system; further storage space is also required to store the configuration information.
In addition, any piece of configuration information that has not been collected with the migration tool (for example, because it has been forgotten) is lost once the target operating system has been installed on the computer. Therefore, this configuration information cannot be recovered any longer. Indeed, the only possibility of accessing it would be to restore the snapshot of the source operative system; however, this operation is so time consuming that it is almost never performed in practice. Conversely, when this happens it is common practice to try to apply the missing configuration information manually; however, this operation is very prone to errors and/or oversights.
U.S. Pat. No. 6,920,555 instead describes an in-place migration process. For this purpose, a storage space that is required to save the configuration information is estimated; free storage space is created in a hard-disk of the computer, so as to be sufficient to the store the configuration information. The target software image is then installed onto the computer (for example, by using a bootable CD or a network boot image). At this point, it is possible to restore the configuration information to the target software image from the free storage space.
This allows avoiding the need of storing the configuration information, for example, on a network server; in this way, the migration process may proceed in parallel on multiple computers. Moreover, the migration of the configuration information may also be performed without any network connection. However, the method described in this document suffers all the other drawbacks pointed out above.